試薬管理アプリ開発日記

GPS改造編(立花先生用) GPSWebアプリサンプル [試作フォーム)] [試作フォーム新] [試作改] [完成品説明]

★概要

本実験は、2017年度卒業した石塚大晃さんの卒業研究論文に基づいて、試薬管理アプリの継承、発展のため
2017年04/11日より着手された。本サイトは、その成果を公開し、情報の共有を目的として開設されたものである。
石塚氏の作成したアプリケーションはandroidスマートフォンのカメラ機能を利用してQRコードを読み取ることができ、
試薬ごとに貼られたラベルを読み取ることで比較的容易に試薬の使用履歴が登録できるというものであった。
また、最終的な構想としては、GPSで位置情報を取得し、試薬の使用・保管箇所をリアルタイムに判別できる 機能を追加する予定であったものの、実装は実現しなかった。
下図の右側にその外観が表示されている。

★課題点

2017/04/11時点では、アプリのテンプレートのみしか再現できなかったため、機能不全であった。
石塚氏の指導を受け、いくつかの参考用サイトを発見したので今後の作業の手立てとしたい。
石塚氏の開発した試薬管理アプリには在来いくつかの問題点があるため、以下に列挙していく。

・「基本使用量」の概念が存在し、すべての薬品の使用料が一律に固定される。
基本使用量の変更には少々煩雑な手順を経るため、改善の余地あり。

・使用者を特定することができない。
・デバッガーアプリで実験したところ、データーベースの書き換えが確認できなかった。
履歴を残ることを確認したが、論文中にデーターベース接続を行うソースコードが発見できず、
データーベースの更新機能の有無について、疑問点がある。※要確認
・MONACAで開発されていたアプリケーションであるため、iOS,Androidの使用を前提として配布できるが、
当研究室ではiOS用アプリを配布するためのAppStoreを入手していないため、Androidに使用が限定されてしまう。
つまり、PC等Android以外の機器からは操作することができない。

★改善策


試薬ビンに記載されたQRコードを読み取ることで、上図のような画面が表示されることを
理想とする。また、「送信」ボタンを押したことにより、上図の要素に加え
データーベースに使用日時、および残量が記載されることが求められる。
また、より発展させた形としては、装置および消耗品(テープ、はんだetc...)
まで登録させることが理想とされる。

QRコード記載の文字列を確かめましょう。 おそらくそこに転送先URLがあると思います。 その転送先URLから新規開発ページにリダイレクトするか、その転送先URLを書き換えてしまうのが早道です。 また転送先URLのサーバーサイドスクリプトが参考になると思います。

立花より。

--------------------------------------------------
●開発ログ
2017/04/11(火) 開発開始。
石塚氏の論文を参考にし、再現を自力で試みたものの、失敗。
ご本人より指導を頂き、デバッグツールでiosから動作を確認。
履歴登録を確認したがデーターベースの書き換えの可否については疑問点。

2017/04/12(水) VBScriptを利用し、Microsoft Accessデーターベースへの接続を試みた。
Access内のデバッグツールを用いてデバッグを行っていたものの、
ドライブを指定する箇所でくり返しエラーを起こし、とうとう解決に至らなかった。
記述したドライブ名は「Microsoft Access Driver(*.mdb)」および「Microsoft.Jet OLEDB.4.0」である。

2017/04/13(木) JavaScript(以下JS)を用いた開発を試行。参考URLhttp://java-script.seesaa.net/)
しかし、このJSで作成したactiveXを使用したコードにはいくつかの問題点があった。
この方式ではクライアントサイドで動作するため、activeXの入っていないプラットフォーム
では正常に機能せず、またデータベースを扱うにあたってはセキュリティ上の問題が
常に付きまとうこととなる。
プラットフォームインデペンデントで秘匿性を維持したwebアプリの開発に際して、
この方式は不適切であると判断し、即日(2017/04/13)をもって終了する。

2017/04/14(金) 石塚氏の論文を再度読み込んだが、QRコード先のURLにたどり着くことができなかった。
本日、取り掛かることができなかったため、来週の課題にしていきたい。
昨日立花先生にご指導を頂き、根本的な箇所で理解が不足していたことに気づいたため
書籍を参考にし、再度webアプリケーションの仕組みについて理解を深めた。
参考図書として「Webアプリケーション構築入門(佐久田博司 監修、矢吹太郎 著作 森北出版)」を用いた。
今回のようなデーターベースとのやり取りが存在するwebアプリ作成にあたっては、
クライアントサイド、サーバーサイド、データーベースサイドの大きく三つに
わけて考え、それぞれの領域に適した言語、様式で開発にあたる必要性がある。
情報のやりとりやデーターベースとの接続等の重要箇所をサーバーサイドで行い
クライアントサイドではサイトの装飾等を扱い、データーベースサイドではSQL文を用いて
データーベース内での操作を行う。
現在、サーバーサイドではVBScriptを用いて記述し、クライアントサイドでは必要に応じてJavaScriptを
用いる予定である。

2017/04/15(土) geolocationインターフェースを使用した位置取得webアプリのソースコードを発見し、参考として記載する。
スマートフォン(IOS,Androidなど)、PC(Windows,macなど)問わず使用できるすぐれものだ。 googlemapが表示されないエラーがあったが、APIキーが原因である可能性を突き止め、edu.yz.yamagata-u.ac.jp内でのみ利用できる
APIキーを発行しソースコードを書き換えることで解決した。
このようにAPIキーが必須となったり、安全な接続が可能なサイトにgeolocationの使用が制限されたりするなど、(例として、HTTPは不可)
位置情報の取り扱いに関してはセキュリティが強化されていく傾向にある。
現在、地図を含め位置情報の利用に関しては検討中であるが、位置情報の秘匿性は比較的高いのではないかと考えている。

2017/04/17(月) pythonを主に学習した。
輪講では、geolocationを発表。機械学習をさせることで、将来的に試薬登録時の座標から部屋番号を割り出すことが理想である。

2017/04/18(火) フォームに改良を加えた。

2017/04/19(水) テンソルフローを知り、将来的にアプリ開発に活かす構想を得た。
Teasorflowはグーグルが無料で公開している人工知能である。
Pythonに無料配布されているモジュールをインストールすることで、Physonを用いて利用することができる。
座標より部屋番号を割り出す学習の他、同時に使用した試薬をまとめて予想したりするなどの利用が考えられる。

2017/04/20(木) PRTR法に則って、使用時間の欄を追加。
検索ボタンの追加により、ID入力によって試薬情報が自動入力する仕組みの外枠が完成。

2017/04/21(金) サーバー接続箇所で頓挫。レコードセットの理解が不足しているので、勉強したい。
作者によってさまざまな記述があり、SQL文の随所随所が実際どのように動作しているのか、理解しかねている節がある。
「VBScriptポケットリファレンス(技術評論社) 潟Aンク 著作」を購入したので、参考にしていきたい。

2017/04/24(月)  geolocationについて輪講を行い、理解を深めた。
geolocationはAPIである。API(Application Programming Interface)はプログラミングの際に使用できる命令や規約、関数のことをいう。
つまり、このAPIを用いることにより、複雑な動作をより簡潔なプログラムで実現することができるのである。
geolocation APIは、Apple社,Mozilla社,Opera社を主軸とするウェブの標準化団体"W3C"が主導した位置取得APIであり
当該団体が運営しているFireFox,Google,Crome,Safariなどのブラウザ上ではデバイスに関係なく作動する。
これら標準的なブラウザが作動する一般的なPC,スマホ,タブレットでは、問題なく位置情報が取得できるということである。
よって以上の学習の結果、プラットフォームインデペンデントなアプリ開発に適しているという確固たる根拠を得ることができた。
2017/04/25(火)  立花先生から頂いたサンプルは複数のファイルに渡っており、解析がうまくいかず悩んでいたところ助言を頂いた。
"@"がファイル名称の冒頭につくものはレコードの表示に携わる出力の箇所であり、indexとつくものは検索フォームを設置し、
情報の入力を担当している。また、Privateとつくものは、認証を必要としているということがわかった。

2017/04/26(水) 主に月例報告書のまとめ作業となるため、今週の開発作業を終了する。
2017/04/29(土) 開発開始より現在に至るまで、サンプルコードの解析に必要とされる膨大な知識量に辟易としてしまい
大きな成果を得られることもなくひと月を費やしてしまった。
そこで、課題を限定し、各個撃破すべくken3氏のサイトを利用して
レコードセットの学習に取り組んだ。
今回、目下の課題を”レコードセット”の学習のみに限定することにより、レコードセットの大まかな仕組みを理解し、
いままで完全コピーペーストでのみ実現していたDB内部情報の表示を恣意的に取得内容を書き換えたものでも可能にした。
その学習過程で作成されたものがこの 試作α である。
すべてのサンプル情報が表示されるので、閲覧には個人認証を必要とする上、大変動作が重たくなっているので十分留意していただきたい。
DBに携わる箇所は全て失敗の連続で、書き換えはおろか表示さえままならなかったが、ここで大きな進展があったと言えよう。
今回の成果を応用し、”ID入力により、該当試薬の情報がフォームに出力される”機能を試作Zに実装していきたい。

2017/05/01(月)  五月に入り、最初に紹介すべき成果物がこちら試作1(If) である。
条件文がうまく作動しなかったことから製作を試みた作品で、非常に限定的であるがいままでサンプルコードのコピペが中心だった学習から、
サンプルコード、リファレンスを参照せず、持ち前の知識と手打ちで作成したいわば総集編というべき作品である。
ソースコードは短く稚拙で単純ではあるが、解説をコメントアウトしながら自信の知識を整理し、理解が深まってきたように感じた。
Formタグでは"name="の箇所を変数として値が代入されていると理解していたが、関数Lenでフォームでの入力内容の文字数を計ろうとしたところ
変数としてではなく文字列として作動してしまった、というエピソードに基づいている。
Request.Formの存在を知り利用していたのにも関わらず、知った気になっただけでいまいち理解できていなかった、そんな自分自身の反省を示す共に
サンプルに頼り切った学習に警鐘を鳴らす渾身の処女作である。

2017/05/02(火)  ついに、試作Zにおいて4/29日に掲げた目標、”ID入力により、該当試薬の情報がフォームに出力される”機能の実装に成功した。
これは初期からあった構想であり、また伊藤先生が十年程前に完成させた旧式にも備わっていた機能である。
当初はサンプルが十分にあり、旧式の製作者である伊藤先生が同室にいらっしゃることからこの程度の機能であれば容易に再現できるものと
踏んでいたが、複数のファイルに跨って駆動するサンプルと関連する様々な周辺知識の不足から、難航した。
今現在ではレコードセットやSQLの理解が進み、今後はよりよいテンポで開発が進行するであろう。

2017/05/10(水)   抵抗尺関連の工作や買い物、GW中の帰省などがあり、開発が遅れていたので、
取り急ぎ開発に再度着手する。
INSERT INTO文のサンプルコードを入手し、要素を抽出、書き換え、動作を検証しているものの、
500エラーの連発でとても萎えた。
原因が全くわからないので、明日に課題を持ち込みたい。

2017/05/11(木)   伊藤先生のお助けもありINSERT INTO文の中に、問題の構文を発見した。
対象となるカラム名の数と、挿入する要素の数が合致していなかったため、
エラーを吐いたようである。

2017/05/12(金)   formタグに関する問題で、検索ボタンを押すと更新ボタンが同時に押され、
勝手にINSERTされることが判明した。
ひとまず応急処置を施し、本日の作業を終了とする。

2017/05/25(木)   フォームに記載されている記入項目のうち、使用時間(分)を除く、試薬ID,試薬名,使用量,使用目的,使用者氏名
の項目の送信を実現した。使用時間に関しては、別途データーベース内のカラムを切って頂く必要があるため、現在保留中である。
緯度,経度,高度のカラムに関しては存在しているものの、未実装である。
今月の月例報告書のまとめ作業に入るため、開発作業を中断する。


2017/06/09(金)   緯度経度高度を除くすべての項目のインサートが可能となった。
ユーザーインタフェースに若干の難があるが、実用可能な現アプリの完成をもって、
一旦試薬管理アプリの製作を終了する。
試薬残量を可視化してあるので、残量を一目で確認することが可能である。
ぜひ、試薬履歴登録の際には当アプリを使用し、感想やコメントなど自由に
寄せていただきたい。